 1.数据存储格式
   
   Hive支持的存储数的格式主要有：TEXTFILE（默认格式） 、SEQUENCEFILE、
RCFILE、ORCFILE、PARQUET。
   textfile为默认格式，建表时没有指定文件格式，则使用TEXTFILE，导入数据时
会直接把数据文件拷贝到hdfs上不进行处理；
   sequencefile，rcfile，orcfile格式的表不能直接从本地文件导入数据，数据要先
导入到textfile格式的表中， 然后再从表中用insert导入sequencefile、rcfile、
orcfile表中。

 2.行存储与列存储
   
   行式存储下一张表的数据都是放在一起的，但列式存储下数据被分开保存了。
   1).行式存储：
   优点：数据被保存在一起，insert和update更加容易
   缺点：选择（selection）时即使只涉及某几列，所有数据也都会被读取
   2).列式存储：
   优点：查询时只有涉及到的列会被读取，效率高
   缺点：选中的列要重新组装，insert/update比较麻烦
   TEXTFILE、SEQUENCEFILE 的存储格式是基于行存储的；
   ORC和PARQUET 是基于列式存储的。
 
 3.TextFile
   
   Hive默认的数据存储格式，数据不做压缩，磁盘开销大，数据解析开销大。 可结合
Gzip、Bzip2使用(系统自动检查，执行查询时自动解压)，但使用这种方式，hive不
会对数据进行切分，从而无法对数据进行并行操作。
   
   create table if not exists uaction_text(
userid string,
itemid string,
behaviortype int,
geohash string,
itemcategory string,
time string
)
row format delimited fields terminated by ','
stored as textfile;
   load data local inpath '/home/hadoop/data/useraction.dat'
overwrite into table uaction_text;
  备注：文件要放置在HiveServer2 所在节点上
  
 4.SEQUENCEFILE
   
   SequenceFile是Hadoop API提供的一种二进制文件格式，其具有使用方便、可分
割、可压缩的特点。 SequenceFile支持三种压缩选择：none，record，block。
Record压缩率低，一般建议使用BLOCK压缩。
 
 5.RCFile
   
   RCFile全称Record Columnar File，列式记录文件，是一种类似于SequenceFile的键
值对数据文件。RCFile结合列存储和行存储的优缺点，是基于行列混合存储的RCFile。
   RCFile遵循的“先水平划分，再垂直划分”的设计理念。先将数据按行水平划分为行
组，这样一行的数据就可以保证存储在同一个集群节点；然后在对行进行垂直划分。
   一张表可以包含多个HDFS block
   在每个block中，RCFile以行组为单位存储其中的数据
   row group又由三个部分组成:
   1).16 个字节的分隔符，作为两个不同行组的分隔符。
   2).存储行组的元数据信息
   3).数据存储区，以列为单位存储真实数据
 
 6.ORCFile
   
   ORC File，它的全名是Optimized Row Columnar (ORC) file，其实就是对RCFile做
了一些优化，在hive 0.11 中引入的存储格式。这种文件格式可以提供一种高效的方
法来存储Hive数据。它的设计目标是来克服Hive其他格式的缺陷。运用ORC File可以
提高Hive的读、写以及处理数据的性能。ORC文件结构由三部分组成：
   1).文件脚注(file footer)：包含了文件中 stripe 的列表，每个stripe行数，以及每个
列的数据类型。还包括每个列的最大、最小值、行计数、求和等信息
   2).postscript：压缩参数和压缩大小相关信息
   3).条带(stripe)：ORC文件存储数据的地方。在默认情况下，一个stripe的大小为250MB
     Index Data：一个轻量级的index，默认是每隔1W行做一个索引。包括该条带的一些统
计信息，以及数据在stripe中的位置索引信息
     Rows Data：存放实际的数据。先取部分行，然后对这些行按列进行存储。对每个列进
行了编码，分成多个stream来存储
     Stripe Footer：存放stripe的元数据信息
	 ORC在每个文件中提供了3个级别的索引：文件级、条带级、行组级。借助ORC提供
的索引信息能加快数据查找和读取效率，规避大部分不满足条件的查询条件的文件和
数据块。使用ORC可以避免磁盘和网络IO的浪费，提升程序效率，提升整个集群的
工作负载。
     事务表必须使用ORC格式
	 create table if not exists uaction_orc(
userid string,
itemid string,
behaviortype int,
geohash string,
itemcategory string,
time string)
stored as orc;
     
	 insert overwrite table uaction_orc select * from uaction_text;
	 
